home *** CD-ROM | disk | FTP | other *** search
- ' ---------------------------
- ' Random Access Record Demo
- ' ---------------------------
-
- DIM 31 gDbFile$
- DIM gRecNum,gTotalRecords
-
- DIM 41 gFirstName$ ' len byte + 41 data bytes = 42
- DIM 41 gLastName$ ' + 42 = 84
- DIM 41 gAddress1$ ' + 42 = 126
- DIM 41 gAddress2$ ' + 42 = 168
- DIM 41 gCity$ ' + 42 = 210
- DIM 2 gState$ ' 2+len byte + even pad =+4=214
- DIM 5 gZip$ ' +6 = 220 total record size
-
- _recSz = 220
-
- END GLOBALS
-
- LOCAL FN displayRecord
- t$ = "Record #: " + STR$(gRecNum) + " of " + STR$(gTotalRecords)
- PRINT%(296,20);t$
- END FN
-
- LOCAL FN drawWnd
- TEXT 0,12,0,0
- t$ = "File: " + gDbFile$
- PRINT%(8,20);t$
- T = 26:L =-7:B = 26:R = 477
- PEN 2,3,1,8,3
- CALL MOVETO(L,T):CALL LINETO(R,B)
- t$ = "First Name: "
- PRINT%(45,58);t$
- t$ = "Last Name:"
- PRINT%(47,86);t$
- t$ = "Address Line 1:"
- PRINT%(21,111);t$
- t$ = "Address Line 2:"
- PRINT%(22,138);t$
- t$ = "City:"
- PRINT%(90,164);t$
- t$ = "State:"
- PRINT%(82,192);t$
- t$ = "Zip:"
- PRINT%(184,193);t$
- t$ = "Telephone:"
- PRINT%(50,219);t$
- FN displayRecord
- END FN
-
- LOCAL FN setButtons
- LONG IF gRecNum < gTotalRecords
- BUTTON 2,_enable ' activate next
- XELSE
- BUTTON 2,_disable
- END IF
- LONG IF gRecNum > 1 ' activate previous
- BUTTON 3,_enable
- XELSE
- BUTTON 3,_disable
- END IF
- FN displayRecord
- EDIT FIELD 1 ' start at first field
- SETSELECT 0,&FF
- END FN
-
- LOCAL FN saveRecord
- LONG IF gRecNum = 0 ' first save
- gDbFile$ = FILES$(_fSave,p$,gDbFile$,gSaveVol)
- LONG IF LEN(gDbFile$)
- gRecNum = 1 ' set to 1st record
- ON ERROR GOSUB 65535 ' disable FB's error handling
- DEF OPEN "TEXTdbMO"
- OPEN "N",1,gDbFile$,_recSz,gSaveVol' open for reading & writing
- LONG IF NOT ERROR ' file exists
- CLOSE #1
- KILL gDbFile$,gSaveVol
- OPEN "N",1,gDbFile$,_recSz,gSaveVol
- END IF
- RECORD #1,0
- PRINT #1,"First Name" ' store field titles in rec zero
- PRINT #1,"Last Name"
- PRINT #1,"Address Line 1"
- PRINT #1,"Address Line 2"
- PRINT #1,"City"
- PRINT #1,"State"
- PRINT #1,"Zip"
- XELSE
- ERROR = 1 ' don't save
- END IF
- END IF
-
- LONG IF NOT ERROR
- gRecNum = gTotalRecords+1 ' append new records
- RECORD #1,gRecNum
- FOR fld = 1 TO 7
- t$ = EDIT$(fld)
- PRINT #1,t$
- NEXT
- ' ---
- ' OR:
- ' gFirstName$ = EDIT$(1)
- ' gLastName$ = EDIT$(2)
- ' gAddress1$ = EDIT$(3)
- ' gAddress2$ = EDIT$(4)
- ' gCity$ = EDIT$(5)
- ' gState$ = EDIT$(6)
- ' gZip$ = EDIT$(7)
- ' PRINT #1, gFirstName$
- ' PRINT #1, gLastName$
- ' PRINT #1, gAddress1$
- ' PRINT #1, gAddress2$
- ' PRINT #1, gCity$
- ' PRINT #1, gState$
- ' PRINT #1, gZip$
- ' ---
- gTotalRecords = LOF(1)-1 ' LOF(n) returns # of records
- FN setButtons
- XELSE
- ERROR=0
- BEEP ' sleazy error handling
- END IF
- END FN
-
- LOCAL FN getRecord
- RECORD #1,gRecNum
- FOR fld = 1 TO 7
- LINE INPUT #1,t$
- EDIT$(fld) = t$
- NEXT
- FN setButtons
- END FN
-
- LOCAL FN doDialog
- evnt = DIALOG (0) 'get the actual event
- id = DIALOG (evnt) 'id of the event (not used in this program)
- SELECT evnt 'what event occurred?
- CASE _wndRefresh: FN drawWnd 'update window background
-
- CASE _Eftab,_efReturn,_efShifttab
- fld = WINDOW(_efNum)
- LONG IF evnt = _efShifttab
- DEC(fld)
- XELSE
- INC(fld)
- END IF
- IF fld>8 THEN fld = 1
- IF fld<1 THEN fld = 8
- EDIT FIELD fld
- SETSELECT 0,&FF ' select all text
-
- CASE _btnClick
- SELECT id
- CASE 1 ' add button
- FN saveRecord
- CASE 2 ' next button
- INC(gRecNum)
- IF gRecNum > gTotalRecords THEN gRecNum = 1' wrap
- FN getRecord
- CASE 3 ' previous button
- DEC(gRecNum)
- IF gRecNum < 1 THEN gRecNum = gTotalRecords' wrap
- FN getRecord
- END SELECT
- END SELECT
- END FN
-
- LOCAL FN doMenu ' only menu item is quit
- WINDOW CLOSE 1
- CLOSE #1
- END
- END FN
-
- LOCAL FN initialize
- gTotalRecords = 0
- gRecNum = 0
- gDbFile$ = "Untitled"
-
- MENU 1,0,1,"File"
- MENU 1,1,1,"Quit/Q"
-
- WINDOW 1,"Data Entry Form",(20,50)-(492,300),280
- TEXT 0,12,0,0
-
- EDIT FIELD 2,"",( 128, 72)-( 357, 88),1,1
- EDIT FIELD 3,"",( 128, 99)-( 357, 115),1,1
- EDIT FIELD 4,"",( 128, 126)-( 357, 142),1,1
- EDIT FIELD 5,"",( 128, 153)-( 357, 169),1,1
- EDIT FIELD 6,"",( 128, 180)-( 165, 196),1,1
- EDIT FIELD 7,"",( 216, 181)-( 310, 197),1,1
- EDIT FIELD 8,"",( 128, 207)-( 279, 223),1,1
- EDIT FIELD 1,"",( 128, 45)-( 357, 61),1,1
-
- BUTTON 1, 1,"Add",(387, 70)-( 458, 90),1
- BUTTON 2, 0,"Next",(387, 108)-( 458, 128),1
- BUTTON 3, 0,"Previous",(387, 140)-( 458, 160),1
- END FN
-
- ' ------------ start of main program
- FN initialize
-
- ON DIALOG FN doDialog
- ON MENU FN doMenu
-
- DO
- HANDLEEVENTS
- UNTIL theCowsComeHome
-
-
-